<html>
    <head>
        <title>前后端分离结构 </title>
    </head>
    <body>
        <script>
             /*
                        三、前后端分离结构  Tiered Structure 

                                    如果选择了ASP.NETCore UI并指定了--tiered选项，则创建的解决方案将是"前后端分离"，
                                    
                                    前后端结构的目的是能够将Web应用程序和HTTP API部署到不同的服务器：

                                                ①、浏览器通过执行超文本标记语言、CSS和JavaScript来运行您的UI。

                                                ②、Web服务器托管静态UI文件（CSS、JavaScript、图像…等）和动态组件（例如Razor页面）。它执行对API服务器的HTTP请求以执行应用程序的业务逻辑。

                                                ③、API服务器托管HTTP API，然后使用应用程序的应用程序和域层来执行业务逻辑。

                                                ④、最后，数据库服务器托管您的数据库。

                                    ★、除非您真的需要这样的4层部署，否则建议使用更易于开发、部署和维护的默认结构。




                                    前后端分离部署结构如下：

                                                1、AuthServer 项目

                                                        此项目用作其他项目的身份验证服务器。

                                                        .Web项目使用OpenId Connect Authentication从AuthServer获取当前用户的身份和访问令牌。

                                                        然后使用访问令牌调用HTTP API服务器。

                                                        HTTP API服务器使用不记名令牌身份验证从访问令牌获取声明以授权当前用户。

                                                        ABP使用OpenIddicModule，该模块使用开源OpenIddic-core库进行应用程序之间的身份验证。
                                                        
                                                        有关OpenIddic和OpenID Connect协议的详细信息，请参阅OpenIddic留档。

                                                        ★、它有自己的appsettings.json，其中包含数据库连接和其他配置。


                                                2、HttpApi.Host项目

                                                        该项目是托管解决方案API的应用程序。它有自己的appsettings.json，其中包含数据库连接和其他配置。


                                                3、Web项目

                                                        就像默认结构一样，这个项目包含应用程序的用户界面（UI）。它包含Razor页面、JavaScript文件、样式文件、图像等…

                                                        这个项目包含一个appsettings.json文件，但这次它没有连接字符串，因为它从不连接到数据库。

                                                        相反，它主要访问远程API服务器和身份验证服务器的端点。

                    */
        </script>
    </body>
</html>